package com.example.leetcode.linklist;

/**
 * 环形链表
 * 判断给定的链表中是否有环。如果有环则返回true，否则返回false。
 */
public class HasCycle {

    /**
     * 快慢指针会相遇，但相遇的位置可能是环中的某个部位，不一定是环的入口
     * @param head
     * @return
     */
    public boolean hasCycle(ListNode head) {
        if (head == null || head.next == null) {
            return false;
        }

        ListNode slow = head;
        ListNode fast = head.next;

        while (slow != fast) {
            if (slow == null || fast == null) {
                return false;
            }

            slow = slow.next;
            fast = fast.next.next;
        }

        return true;
    }
}
